package cn.wen.bases.framework.struts.action.model;

import java.io.Serializable;

import org.apache.struts2.StrutsConstants;
import org.apache.struts2.config.DefaultSettings;

import cn.wen.bases.framework.struts.UtilsOfStruts;
import cn.wen.java.lang.HelperOfSystem;

/**
 * Title：(可选)公共Action Model类
 * <p>
 * Description：
 * <p>
 * Copyright：Copyright (c) 2010-2012
 * 
 * @author <a href="mailto:ct_wen@qq.com">ctwen</a>, 温承瑭
 * @version Revision：1.0 Date：2010/12/10 Description：初完成。
 *          <p>
 *          Revision：1.1 Date：2011/1/13 Description：新增namespace，actionName，actionMethod，actionExtension。
 *          <p>
 */
public abstract class AbstractModel implements Serializable {

    private static final long serialVersionUID = 3922704775511009615L;

    protected String jsonText; // 专门提供JSON文本

    private String namespace;

    private String actionName;

    private String actionMethod;

    private String actionExtension;

    private String contextPath;

    private String fullPath;

    /**
     * 返回模型内的JSON数据。
     * 
     * @return JSON 数据
     */
    public String getJsonText() {
	return jsonText;
    }

    /**
     * 将JSON数据置入模型。
     * 
     * @param jsonText JSON数据
     */
    public void setJsonText(String jsonText) {
	this.jsonText = jsonText;
    }

    /**
     * 获取当前Action的名称空间
     * 
     * @return 名称空间
     * @see cn.wen.bases.framework.struts.UtilsOfStruts#getActionProxy()
     */
    public String getNamespace() {
	if (null == namespace) {
	    namespace = UtilsOfStruts.getActionProxy().getNamespace();
	}
	return namespace;
    }

    /**
     * 获取当前处理的ActionName（Action的名称）
     * 
     * @return 当前Action的名称
     * @see cn.wen.bases.framework.struts.UtilsOfStruts#getActionProxy()
     */
    public String getActionName() {
	if (null == actionName) {
	    actionName = UtilsOfStruts.getActionProxy().getActionName();
	}
	return actionName;
    }

    /**
     * 获取当前处理的ActionMethod（Action被执行的方法名称）
     * 
     * @return 当前Action被执行的方法名称
     * @see cn.wen.bases.framework.struts.UtilsOfStruts#getActionProxy()
     */
    public String getActionMethod() {
	if (null == actionMethod) {
	    actionMethod = UtilsOfStruts.getActionProxy().getMethod();
	}
	return actionMethod;
    }

    /**
     * 获取ActionExtension（Action的后缀名称）
     * 
     * @return Action的后缀名称
     * @see org.apache.struts2.config.DefaultSettings.get(StrutsConstants.STRUTS_ACTION_EXTENSION);
     */
    public String getActionExtension() {
	if (null == actionExtension) {
	    actionExtension = DefaultSettings.get(StrutsConstants.STRUTS_ACTION_EXTENSION);
	}
	return actionExtension;
    }

    /**
     * 获取Web应用的上下文名称
     * 
     * @return Web应用的上下文名称
     * @see cn.wen.java.lang.HelperOfSystem.Web#getContextPath()
     */
    public String getContextPath() {
	if (null == contextPath) {
	    contextPath = HelperOfSystem.Web.getContextPath();
	}
	return contextPath;
    }

    /**
     * 获取请求（Request）的完整URL地址。
     * 
     * @return 请求（Request）的完整URL地址。
     * @see cn.wen.java.lang.HelperOfSystem.Web#getFullPath()
     */
    public String getFullPath() {
	if (null == fullPath) {
	    fullPath = HelperOfSystem.Web.getFullPath();
	}
	return fullPath;
    }

}
